/**
 * 
 */
package fr.gfi.agraf.vue.action.ajax;

import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;

import com.opensymphony.xwork2.ActionSupport;

import fr.gfi.agraf.exception.AgrafException;
import fr.gfi.agraf.service.ICommunService;
import fr.gfi.agraf.utils.DateUtils;
import fr.gfi.agraf.utils.PropertiesUtils;
import fr.gfi.agraf.utils.SpringFactory;
import fr.gfi.agraf.vue.bean.CommunDTO;
import fr.gfi.agraf.vue.bean.EtatDTO;
import fr.gfi.agraf.vue.bean.TacheDTO;
import fr.gfi.agraf.vue.bean.UtilisateurDTO;

/**
 * @author Fw
 * 
 */
public class AjaxGetListeTacheByActivite extends ActionSupport {

	/**
	 * Logger
	 */
	private final static Logger LOGGER = Logger.getLogger(AjaxGetListeTacheByActivite.class);

	private static final String COMMUN_SERVICE = "CommunService";

	private static final String ERREUR_SAISIE_ID = "erreur.saisie.id";

	/**
	 * Généré par Java
	 */
	private static final long serialVersionUID = 1246689008634554520L;

	private Long idActivite;
	private Long idUtilisateur;
	private Date date;
	private List<TacheDTO> listeTaches;
	private List<EtatDTO> listeEtats;
	private List<UtilisateurDTO> listeUtilisateurActifs;

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.opensymphony.xwork2.ActionSupport#execute()
	 */
	@Override
	public String execute() {
		if (idActivite == null) {
			return SUCCESS;
		}
		final ICommunService communService = (ICommunService) SpringFactory.getApplicationContext().getBean(
				COMMUN_SERVICE);

		CommunDTO communDTO = null;

		try {
			communDTO = communService.getListeTacheByActiviteAndUtilisateur(idActivite, idUtilisateur, date);
		} catch (final AgrafException ae) {
			// Recupére le message d'erreur
			final String messageErreur = PropertiesUtils.getProperty(ae.getKey());
			// Ajoute action error
			addActionError(messageErreur);
			LOGGER.error(messageErreur, ae);
		}
		listeTaches = communDTO.getTacheList();
		listeEtats = communDTO.getEtatList();
		// Dans le cas ou je dois recuperer la liste des utilisateurs (page
		// administrer Taches)
		if (idUtilisateur == null) {
			listeUtilisateurActifs = communDTO.getUtilisateurActifList();
		}
		return SUCCESS;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.opensymphony.xwork2.ActionSupport#validate()
	 */
	@Override
	public void validate() {
		if (idActivite == null) {
			addActionError(ERREUR_SAISIE_ID);
		}
		super.validate();
	}

	/**
	 * @param idActivite
	 *            the idActivite to set
	 */
	public void setIdActivite(final Long idActivite) {
		this.idActivite = idActivite;
	}

	/**
	 * @return the listeTaches
	 */
	public List<TacheDTO> getListeTaches() {
		return listeTaches;
	}

	/**
	 * @param listeTaches
	 *            the listeTaches to set
	 */
	public void setListeTaches(final List<TacheDTO> listeTaches) {
		this.listeTaches = listeTaches;
	}

	/**
	 * @param idUtilisateur
	 *            the idUtilisateur to set
	 */
	public void setIdUtilisateur(final Long idUtilisateur) {
		this.idUtilisateur = idUtilisateur;
	}

	/**
	 * @param date
	 *            the date to set
	 */
	public void setDate(final String date) {
		this.date = DateUtils.stringToDate(date);
	}

	/**
	 * @return the listeEtats
	 */
	public List<EtatDTO> getListeEtats() {
		return listeEtats;
	}

	/**
	 * @return the listeUtilisateurActifs
	 */
	public List<UtilisateurDTO> getListeUtilisateurActifs() {
		return listeUtilisateurActifs;
	}

}
